package main

import "fmt"

/*
函数可接受零个或多个参数。
*/

func main() {

	fmt.Println(add(3, 7)) //add => 10

	fmt.Println(addi(4, 6, 10)) // addi => 20

	fmt.Println(swap("hello", "World")) // swap => "World hello"

	fmt.Println(spilit(17)) // spilit => 7 10
}

// 函数可放置文件任意位置
func add(a int, b int) int {
	return a + b
}

// 当连续两个或多个函数的已命名形参类型相同时，除最后一个类型以外，其它都可以省略。 只写一个 int
func addi(a, b, c int) int {
	return a + b + c
}

// 函数可以返回任意数量的返回值。 swap 函数返回了两个字符串。
func swap(a, b string) (string, string) {
	return b, a
}

// * Go 的返回值可被命名，它们会被视作定义在函数顶部的变量。
// * 返回值的命名应当能反应其含义，它可以作为文档使用。
// * 没有参数的 return 语句会直接返回已命名的返回值，也就是「裸」返回值。
func spilit(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}
